Some large scale applications may operate by dividing a large database into smaller segments, where each of the segments may be assigned to different database instances, each of which may be on a different hardware platform. A router may receive a request for the database, determine which instance of the database may handle the request, and pass the request to the particular instance for processing.
In a simple example of such a database, a large database may be divided based on the first letter of a record. All of the records beginning with “A” may be on one server, all the records beginning with “B” may be on another server, etc. Problems may arise in managing the database when the first server may become full and may not be able to store additional records.